package com.seleniti.enpareja.controller.model.integration.service;

import org.ioc.commons.integration.common.RequestManager;
import org.ioc.commons.integration.service.Service;

import com.seleniti.enpareja.controller.common.domain.Page;
import com.seleniti.enpareja.controller.model.integration.database.domain.Couple;
import com.seleniti.enpareja.controller.model.integration.database.domain.CoupleRequest;
import com.seleniti.enpareja.controller.model.integration.database.domain.User;

public interface CoupleService extends Service {

	RequestManager<Couple> find(String id);
	
	RequestManager<String> save(Couple couple);

	RequestManager<Void> delete(Couple couple);

	RequestManager<Couple> makeCouple(CoupleRequest coupleRequest);

	RequestManager<Couple> makeSingle(String userId);

	RequestManager<Couple> makeTestCouple(String userId);

	RequestManager<CoupleRequest> makeCoupleRequest(String requestToUserId, String requestFromUserId);

	RequestManager<Page<CoupleRequest>> getAllCoupleRequestsPage(long start, long length);
	
	RequestManager<Page<CoupleRequest>> getCoupleRequestsToOrFromUserPage(String userId, long start, long length);

	RequestManager<Void> dismissCoupleRequest(CoupleRequest request);

	RequestManager<Void> dismissCoupleRequest(String from, String to);

	RequestManager<Void> rejectCoupleRequest(CoupleRequest request);

	RequestManager<Void> breakUp(User user);

}
